#include <bits/stdc++.h>

using uint=unsigned int;
using ll=long long;
using ull=unsigned long long;
using i128=__int128;

const int N=1e6+5;

void Solve(){
    
    return;
}

int main(){
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr); std::cout.tie(nullptr);
    int t;
    std::cin>>t;
    while(t--){
        int n;
        std::cin>>n;
        std::vector<int> a(n);
        for(int i=0;i<n;i++){
            std::cin>>a[i];
        }
        std::stack<int> st;
        int maxn=0;
        for(int i=n-1;i>=0;i--){
            while(!st.empty()&&a[i]>st.top()){
                maxn=std::max(maxn,a[i]+st.top());
                st.pop();
            }
            st.push(a[i]);
        }
        std::cout<<maxn<<std::endl;
    }

    return 0;
}
// #include <bits/stdc++.h>
// #define I_can_AK int main

// using uint = unsigned int;
// using ll = long long;
// using ull = unsigned long long;
// using db = double;
// using i128 = __int128;

// const int N = 1e6 + 5;

// void Solve(){
//     int n;
//     std::cin >> n;
//     std::vector<int> a(n);
//     for (int i = 0; i < n; ++i) {
//         std::cin >> a[i];
//     }
    
//     int mx = 0;
//     int mxf = a[0];
    
//     for (int j = 1; j < n; ++j) {
//         if (mxf > a[j]) {
//             mx = std::max(mx, mxf + a[j]);
//         }
//         mxf = std::max(mxf, a[j]);
//     }
    
//     std::cout << mx << "\n";
//     return ;
// }

// I_can_AK(){
//     std::ios::sync_with_stdio(false);
//     std::cin.tie(nullptr); std::cout.tie(nullptr);
//     int T = 1;
//     std::cin >> T;
//     while(T--) Solve();
//     return 0;
// }